GetAxisByIndex

从轴取得资讯。

Syntax

KsError GetAxisByIndex(
     int Index,
     SlaveStatus* Details,
     int* Resolution,
     DWORD* InputVariables,
     DWORD* OutputVariables
);

参数

Index:轴的索引。索引以 0 为起始;别名将影响此参数。

Details:指示用以接收轴资讯的 SlaveStatus 结构。

Resolution:轴的编码器解析度。解析度取决于 ESI 资料库中的 Resolution object。若 Resolution object 被选取,则解析度来自于储存于物件中的值;若 Resolution object 未选取,则解析度将套用 ESI 资料库中的 Default Resolution 设定值。

InputVariables:PDO 数据中可用的输入变数。下表列出 InputVariables 的位元遮罩。

OutputVariables:PDO 数据中可用的输出变数。下表列出 OutputVariables 的位元遮罩。

InputVariables 的位元遮罩

十六进制位元遮罩 变数
0x1 VAR_STATUS_WORD
0x2 VAR_ACTUAL_POSITION
0x4 VAR_SECOND_ENCODER
0x8 VAR_ACTUAL_VELOCITY
0x10 VAR_ACTUAL_TORQUE
0x20 VAR_TOUCH_PROBE_STATUS
0x40 VAR_MOP_DISPLAY
0x80 VAR_AXIS_INPUTS

OutputVariables 的位元遮罩

十六进制位元遮罩 变数
0x1 VAR_CONTROL_WORD
0x2 VAR_TARGET_POSITION
0x4 VAR_TARGET_VELOCITY
0x8 VAR_TARGET_TORQUE
0x10 VAR_TORQUE_OFFSET
0x20 VAR_TOUCH_PROBE_CONTROL
0x40 VAR_MOP
0x80 VAR_AXIS_OUTPUTS

回传值

若此函式执行成功,会回传 errNoError,否则会传回错误码。如需更多有关错误码的资讯,请参阅 KsError 清单。

备注

取得轴与其编码器解析度明细。KINGSTAR 子系统启动后使用。

可用的 EtherCAT 状态

ecatOP

范例

复制
SlaveStatus slaveStatus = { 0 };
int resolution = 0;
DWORD InputVar = 0, OutputVar = 0;

nRet = GetAxisByIndex(0, &slaveStatus, &resolution, &InputVar, &OutputVar);
if (nRet == errNoError)
{
    // Check the slave information in the SlaveStatus structure.
    RtPrintf("Axis 0 %s: Vendor 0x%x, Product 0x%x, Revision 0x%x, Serial 0x%x\n",
             slaveStatus.Name, slaveStatus.VendorId, slaveStatus.ProductCode,
             slaveStatus.RevisionNumber, slaveStatus.SerialNumber);
    RtPrintf("Address: Auto %d, Fixed %d, Alias %d\n",
             slaveStatus.SlaveId, slaveStatus.PhysAddress, slaveStatus.AliasAddress);
    RtPrintf("PDO: Input len %d, Output len %d, Index offset 0x%x\n",
             slaveStatus.InputLength, slaveStatus.OutputLength, slaveStatus.VariableIndexOffset);
    RtPrintf("State %d, Cycle time %d\n", slaveStatus.State, slaveStatus.CycleTime);

    // Use defined bit mask to check if desired variables are in the PDO data.
    if ((InputVar & VAR_MOP_DISPLAY) == VAR_MOP_DISPLAY) {
        BYTE mopDisplay = 0;
        nRet = ReadAxisMopDisplay(0, &mopDisplay);
        if (mopDisplay != 8 && (OutputVar & VAR_MOP) == VAR_MOP) {
            nRet = WriteAxisMop(0, 8);
        }
    }
}

使用需求

  RT Win32
最低支援版本 4.0 4.0
标头档 ksapi.h ksapi.h
程式库 KsApi_Rtss.lib KsApi.lib

参见

GetIOByIndex

GetSlaveById